var controlList = [{key: '1', value: '单行文本框'}, {key: '2', value: '多行文本框'},
    {key: '10', value: '富文本框'}, {key: '3', value: '数据字典'},
    {key: '4', value: '人员选择器(单选)'}, {key: '8', value: '人员选择器(多选)'},
    {key: '17', value: '角色选择器(单选)'}, {key: '5', value: '角色选择器(多选)'},
    {key: '18', value: '组织选择器(单选)'}, {key: '6', value: '组织选择器(多选)'},
    {key: '19', value: '岗位选择器(单选)'}, {key: '7', value: '岗位选择器(多选)'},
    {key: '16', value: '隐藏域'}, {key: '9', value: '文件上传'},
    {key: '11', value: '下拉选项'}, {key: '13', value: '复选框'},
    {key: '14', value: '单选按钮'}, {key: '15', value: '日期控件'},
    {key: '22', value: '图片展示控件'}
];


/**
 * 下拉选项模版。
 */
var optionTemplate = '<option value="#value">#text</option>';

/**
 * 字段类型数据
 */
var varchar_ = "varchar";
var clob_ = "clob";
var date_ = "date";
var number_ = "number";
var dictType = '';
var setter;
var form;
/**
 * 值来源。
 */
var varFromList = [{key: 0, value: '表单输入'}, {key: 1, value: '脚本运算(显示)'},
    {key: 2, value: '脚本运算(不显示)'}, {key: 3, value: '流水号'}];

layui.config({
    base: serverPath.formPath + staticPath.formPath //静态资源所在路径
}).extend({
    index: 'index' //主入口模块
}).use(['index', 'form', 'layedit', 'laydate', 'jquery', 'setter', 'table', 'layer', 'tree'], function () {
    var layer = layui.layer, tree = layui.tree;
    setter = layui.setter;
    form = layui.form;
    var $ = layui.$;
    var index = parent.layer.getFrameIndex(window.name);
    $('#goBack').click(function () {
        parent.layer.close(index)
    });

    $('#serNum').on('click', function () {
        parent.layer.open({
            type: 2,
            title: "流水号",
            shade: 0.3,
            area: ['700px', '500px'],
            content: serverPath.formPath +  setter.workflowLinkPath + 'identity/view/list?parentName='+window.name
        })
    });
    form.on('checkbox(allChoose)', function (data) {
        $("input[name='fileTypes']").each(function () {
            this.checked = data.elem.checked;
        });
        form.render();
    });

    form.on('checkbox(fileTypes)', function (data) {
        var count = 0,allTypesCount = 0;
        $("input[id='fileTypesAll']").prop("checked", false);
        $("input[name='fileTypes']").each(function () {
            allTypesCount++;
            if ($(this).prop("checked") == true) {
                count++;
            }
        });
        if (count == allTypesCount) {
            $("input[id='fileTypesAll']").prop("checked", true);
        }
        form.render();
    });

    $("#commonScript").on('click', function () {
        parent.layer.open({
            type: 2,
            area: ['800px', '600px'],
            title: ['脚本'],
            content: serverPath.formPath +  setter.formLinkPath + "table/view/script?param=1&parentName="+window.name+"&scriptObj=script"
        });
    });
    $("#commonScriptId").on('click', function () {
        parent.layer.open({
            type: 2,
            area: ['800px', '600px'],
            title: ['脚本'],
            content: serverPath.formPath +  setter.formLinkPath +  "table/view/script?param=2&parentName="+window.name
        });
    });

    $.ajax({
        type: 'post',
        url: serverPath.formPath + setter.sysLinkPath +"globalType/list",
        dataType: 'json',
        data: {"catKey": "DIC", "hasRoot": "-1", "treeType": "1"},
        success: function (result) {
            tree.render({
                elem: "#classtree",
                data: result.data,
                click: function (node) {
                    var $select = $($(this)[0].elem).parents(".layui-form-select");
                    $select.removeClass("layui-form-selected").find(".layui-select-title span").html(node.data.title).end().find("input:hidden[name='selectID']").val(node.data.id);
                    dictType = node.data.id;
                }
            });
        }
    });


    $(".downpanel").on("click", ".layui-select-title", function (e) {
        $(".layui-form-select").not($(this).parents(".layui-form-select")).removeClass("layui-form-selected");
        $(this).parents(".downpanel").toggleClass("layui-form-selected");
        layui.stope(e);
    }).on("click", "dl i", function (e) {
        layui.stope(e);
    });

    $("#addList").on('click', function () {
        var tr = $("<tr><td><div class='editable-left-div'style='margin-bottom:10px;' ><label style='margin-left:10px;'>值:<input name='optionKey' autocomplete='off' type='text' style='height:28px;'></label><label style='margin-left:10px;'>选项:<input name='optionValue' type='text' style='height:28px;'></label><a class='moveUp layui-btn layui-btn-sm' style='padding:0 5px;margin-left:5px;'>上移</a><a class='moveDown layui-btn layui-btn-sm' style='padding:0 5px'>下移</a><a class='remove layui-btn layui-btn-danger layui-btn-sm' style='padding:0 5px'>移除</a></div></td></tr>")
        $(".addFrom").append(tr);
    });
    $(document).on('click', ".remove", function () {
        var that = $(this);
        layer.confirm('确定删除？', {
            btn: ['确定'] //按钮
        }, function (index) {
            layer.close(index);
            that.parents('tr').remove();
        }, function () {
        });
    });
    $(document).on('click', ".moveUp", function () {
        var tr = $(this).parents('tr')
        $(tr).insertBefore($(tr).prev());
    });
    $(document).on('click', ".moveDown", function () {
        var tr = $(this).parents('tr')
        $(tr).insertAfter($(tr).next());
    });
    form.on('select(fieldType)', function (data) {
        var fieldType = data.value;
        $("#isShowComdify").prop("checked", false);
        $("#coinType").prop("checked", false);
        if (fieldType == "varchar") {
            $(".length").show();
            $(".number").hide();
            $("#spanDateFormat").hide();
            $(".validationRule").show();
            $(".labeLength").show();
        } else if (fieldType == "number") {
            $(".length").hide();
            $(".number").show();
            $(".labeLength").show();
            $("#spanDateFormat").hide();
            $("#coinValueDiv").hide();
            $("#num").css("margin-right", "16%");
            $("#intLen").val("13");
        } else if (fieldType == "date") {
            $("#spanDateFormat").show();
            $(".validationRule").hide();
            $(".length").hide();
            $(".number").hide();
            $(".labeLength").hide();
        } else if (fieldType == "clob") {
            $(".length").hide();
            $("#spanDateFormat").hide();
            $(".validationRule").show();
            $(".labeLength").hide();
        } else {
            $(".length").show();
        }
        //控件列表
        setControlByType(fieldType);
        //值来源
        setValueFromByFieldType(fieldType);
        //控制是否加密显示与隐藏
        encryptDivShow();
        form.render();
    });
    form.on('checkbox(coinType)', function (data) {
        if ($("input[name='coinType']")[0].checked) {
            $("#coinValueDiv").show();
            $("#num").css("margin-right", "-6%")
            $("#isShowComdify").prop("checked", true);
            $("#isShowComdify").attr("disabled", "disabled");
        } else {
            $("#coinValueDiv").hide();
            $("#num").css("margin-right", "16%")
            $("#isShowComdify").prop("checked", false);
            $("#isShowComdify").removeAttr("disabled");
        }
        form.render();
    });
    form.on('select(valueFrom)', function (data) {
        $(".IDScript").hide();
        $(".limit").hide();
        $(".user").hide();
        var value = data.value;
        if (value == "1" || value == "2") {
            $(".script").show();
            $(".validationRule").hide();
            $(".serNumber").hide();
            $(".conTypes").show();
            $("#controlType").val("1");
        } else if (value == "3") {
            $(".serNumber").show();
            $(".conTypes").hide();
            $(".validationRule").hide();
            $(".script").hide();
        } else {
            $(".script").hide();
            $(".serNumber").hide();
            $(".conTypes").show();
            $(".validationRule").show();
        }
        IDScriptShow();
        //日期控件时候，隐藏验证规则
        if ($("#controlType").val() =="15"){
            $(".validationRule").hide();
        }
        form.render();
    });

    //控制ID脚本显示与隐藏
    function IDScriptShow() {
        var controlType = $("select[name='controlType']").val();
        var valueFrom = $("select[name='valueFrom']").val();
        if ((valueFrom == "1" || valueFrom == "2") && isExecutorSelector(controlType)) {
            $(".IDScript").show();
        } else {
            $(".IDScript").hide();
        }
    }

    /**
     * 判断控件类型是否为选择器。
     * @param ctlType
     * @returns {Boolean}
     */
    function isExecutorSelector(ctlType) {
        ctlType = parseInt(ctlType);
        if (ctlType == 4 || ctlType == 8 || ctlType == 17 || ctlType == 5 || ctlType == 18
            || ctlType == 6 || ctlType == 19 || ctlType == 7 || ctlType == 20) {
            return true;
        }
        return false;
    }
    $(document).on('mouseenter', '.layui-tree li a cite', function () {
        $(".layui-tree li a cite").each(function (i) {
            $(this).removeClass("colorSwitch fontColor");
        });
        $(this).addClass("colorSwitch fontColor");
    }).mouseout(function () {
        $(this).removeClass("colorSwitch fontColor");
    });
    //控件类型
    form.on('select(controlType)', function (data) {
        $(".user").hide();
        $(".limit").hide();
        $(".dataDic").hide();
        $(".org").hide();
        $(".pos").hide();
        $(".dropDown").hide();
        $(".validationRule").hide();
        $("#uploadFileDiv").hide();
        $("#uploadFileTypeDiv").hide();
        $(".IDScript").hide();
        $("#isRequired").removeAttr("disabled");

        var value = data.value;
        var valueFrom = $("select[name='valueFrom']").val();
        if (value == "3") {
            if (valueFrom != 1 && valueFrom != 2) {
                $(".dataDic").show();
            }
        } else if (value == "4") {
            $(".limit").show();
            $(".user").show();
        } else if (value == "8") {
            $(".limit").show();
        } else if (value == "18") {
            $(".limit").show();
            $(".org").show();
        } else if (value == "6") {
            $(".limit").show();
        } else if (value == "19") {
            $(".limit").show();
            $(".pos").show();
        } else if (value == "7") {
            $(".limit").show();
        } else if (value == "1" || value == "2") {
            $(".validationRule").show();
        } else if (value == "15") { //日期控件
            $("select[name='fieldType']").val("date");
            $("#spanDateFormat").show();
        } else if (value == "9") { //文件上传
            if (valueFrom != 1 && valueFrom != 2) {
                // $("#uploadFileDiv").show();
                $("#encryptDiv").hide();
                $("#uploadFileTypeDiv").show();
                uploadFileType();
            }
            $("#encryptDiv").hide();
        } else if (value == "16") { //隐藏域 必填禁用
            $("#isRequired").attr("disabled","disabled");
        }

        if (value == "11") {
            if (valueFrom != 1 && valueFrom != 2) {
                $(".dropDown").show()
            }
        } else if (value == "13") {
            if (valueFrom != 1 && valueFrom != 2) {
                $(".dropDown").show()
            }
        } else if (value == "14") {
            if (valueFrom != 1 && valueFrom != 2) {
                $(".dropDown").show()
            }
        } else {
            $(".dropDown").hide()
        }
        hdlIsReferenceShow(value);
        IDScriptShow();
        encryptDivShow();
        hdlCharLen(value);
        form.render();
    });
    //监听radio
    form.on('radio(erweima)', function (obj) {
        if (obj.value == "1") {
            $(".encAlgorithm").show()
            $(".decAlgorithm").show()
        } else {
            $(".encAlgorithm").hide()
            $(".decAlgorithm").hide()
        }
    });

    //控制是否加密的显示隐藏
    function encryptDivShow() {
        $("#encryptDiv").hide();
        $("input:radio[name=isEncrypt][value='0']").prop("checked", "checked");
        $(".encAlgorithm").hide();
        $(".decAlgorithm").hide();
        var controlType = $("select[name='controlType']").val();
        var fieldType = $("select[name='fieldType']").val();
        if (fieldType == "varchar") {
            if (controlType == "1") {
                $("#encryptDiv").show();
            }
        }
    }

    /**
     * 根据【字段类型】设置控件类型。
     * @param fieldType 【字段类型】
     */
    function setControlByType(fieldType) {
        var objSelect = $('#controlType');
        objSelect.empty();
        //控件列表。
        $(controlList).each(function (i, d) {
            var option = optionTemplate.replace('#value', d.key).replace('#text', d.value);
            //文本类型
            if (fieldType == varchar_) {
                if (d.key != "10")
                    objSelect.append(option);
            } else if (fieldType == clob_) {
                //富文本框和文件类型
                if (d.key == "2" || d.key == "10")
                    objSelect.append(option);
            } else if (fieldType == date_) {
                if (d.key == "15")
                    objSelect.append(option);
            }
            else if (fieldType == number_) {
                //数字
                if (d.key == "1" || d.key == "11" || d.key == "16") {//单行文本框、下拉选项、隐藏域
                    objSelect.append(option);
                }
            }
        });
    }

    /**
     * 设置字段来源。
     * @param fieldType
     */
    function setValueFromByFieldType(fieldType) {
        var objSelect = $('#valueFrom');
        objSelect.empty();
        $(varFromList).each(function (i, d) {
            var key = d.key;
            var option = optionTemplate.replace('#value', key).replace('#text', d.value);

            //文本
            if (fieldType == varchar_) {
                objSelect.append(option);
                //数字
            } else if (fieldType == number_) {
                if (key != 3) {
                    objSelect.append(option);
                }
                //大文本
            } else if (fieldType == clob_) {
                if (key == 0) {
                    objSelect.append(option);
                }
                //日期
            } else {
                if (key != 3) {
                    objSelect.append(option);
                }
            }
        });
    }

    /**
     * 根据值来源和控件类型控制 超连接 选项 显示
     * @param vf
     * @param ct
     * @param value
     */
    function hdlIsReferenceShow(ct, value) {
        ct = "" + ct;
        var showIsLink = $("#showIsReference");
        var isLink = $("#isReference");
        showIsLink.hide();
        switch (ct) {
            case '4': //人员选择器(单选)
            case '8': //人员选择器(多选)
            case '17': //角色选择器(单选)
            case '5': //角色选择器(多选)
            case '18': //组织选择器(单选)
            case '6': //组织选择器(多选)
            case '19': //岗位选择器(单选)
            case '7': //岗位选择器(多选)
            case '20': //流程引用
                showIsLink.show();
                break;
        }
        isLink.attr("checked", "checked");
    }


    /**
     * 从页面控件获取字段数据对象。(编辑)
     * @returns
     */
    form.on('submit(fieldForm)', function (data) {
        var fieldData = {
            "charLen": 0,
            "intLen": 0,
            "decimalLen": 0,
            "dictType": "",
            "identity": "",
            "validRule": "",
            "isDeleted": 0,
            "valueFrom": 0,
            "script": "",
            "controlType": 1,
            "fileTypes": "",
            "isEncrypt": 0,
            "encryptClass": "",
            "decryptClass": "",
            "scriptID": "",
            "identity": ""
        };

        fieldData.fieldName = $("input[name='fieldName']").val();
        fieldData.fieldDesc = $("input[name='fieldDesc']").val();
        fieldData.fieldType = $("select[name='fieldType']").val();
        if(fieldData.fieldType == date_){
            fieldData.controlType = 15;
        }else{
            fieldData.controlType = $("select[name='controlType']").val();
        }
        fieldData.dictType = dictType;
        fieldData.valueFrom = $("select[name='valueFrom']").val();
        //数据类型为日期的时候，需要设置日期格式。
        if (fieldData.fieldType == date_) {
            var dateType = $("select[name='selDateFormat']").val();
            var format="";
            switch (dateType) {
                case "date":
                    format = "yyyy-MM-dd";
                    break;
                case "year":
                    format = "yyyy";
                    break;
                case "datetime":
                    format = "yyyy-MM-dd HH:mm:ss";
                    break;
                case "time":
                    format = 'HH:mm:ss';
                    break;
                default:
                    break;
            }
            var json;
            if ($("#isCurrentDate")[0].checked) {
                json = {"format": format,"dateType":dateType, "displayDate": "1"};
            } else {
                json = {"format": format, "dateType":dateType, "displayDate": "0"};
            }
            fieldData.ctlProperty = JSON.stringify(json);
        }

        //必填
        fieldData.isRequired = $("input[name='isRequired']")[0].checked ? 1 : 0;
        //显示到列表
        fieldData.isList = $("input[name='isList']")[0].checked ? 1 : 0;
        //作为查询条件
        fieldData.isQuery = $("input[name='isQuery']")[0].checked ? 1 : 0;
        //是否流程变量
        fieldData.isFlowVar = $("input[name='isFlowVar']")[0].checked ? 1 : 0;
        fieldData.isReference = $("input[name='isReference']")[0].checked ? 1 : 0;

        if (fieldData.fieldType == number_) {
            var showCoin = $("input[name='coinType']:checked").val();
            var showComdifyValue = $("input[name='isShowComdify']")[0].checked ? 1 : 0;
            var json = {};
            if (showCoin) {
                var coinValue = $("select[name='coinValue']").val();
                json.coinValue = coinValue;
                json.isShowComdify = showComdifyValue;
                var decimalLenVal = $("input[name='decimalLen']").val();
                if (decimalLenVal) {
                    var decimalLen = parseInt(decimalLenVal);
                    json.decimalLen = decimalLen;
                }
                fieldData.ctlProperty = JSON.stringify(json);
            } else {
                json.coinValue = "";
                json.isShowComdify = showComdifyValue;
                var decimalLenVal = $("input[name='decimalLen']").val();
                if (decimalLenVal) {
                    var decimalLen = parseInt(decimalLenVal);
                    json.decimalLen = decimalLen;
                }
                fieldData.ctlProperty = JSON.stringify(json);
            }
        }

        if (fieldData.fieldType == varchar_) {
            var charLenVal = $("input[name='charLen']").val();
            if (charLenVal) {
                var charLen = parseInt(charLenVal);
                fieldData.charLen = charLen;
            }
        }
        else if (fieldData.fieldType == number_) {
            var intLenVal = $("input[name='intLen']").val();
            var decimalLenVal = $("input[name='decimalLen']").val();
            if (intLenVal) {
                var intLen = parseInt(intLenVal);
                fieldData.intLen = intLen;
            }
            if (decimalLenVal) {
                var decimalLen = parseInt(decimalLenVal);
                fieldData.decimalLen = decimalLen;
            }
        }

        fieldData.isEncrypt = $("input[name='isEncrypt']:checked").val();
        if (fieldData.isEncrypt == 1) {
            fieldData.encryptClass = $("#encrypt").val();
            fieldData.decryptClass = $("#decrypt").val();
        }
        fieldData.validRule = $("select[name='validRule']").val();
        fieldData.options = JSON.stringify(getOptionData());
        fieldData.script = $("#script").val();
        fieldData.scriptID = $("#scriptID").val();
        fieldData.identity = $("#identityName").val();
        //流水号校验 如果值来源选择流水号 则流水号不能为空
        if(fieldData.valueFrom == 3 && fieldData.identity == ''){
            layer.msg('请先选择对应的流水号规则', {icon: 5});
            return false;
        }
        // 处理人员选择器和显示当前用户
        if (fieldData.controlType == 4 || fieldData.controlType == 8) {
            var json = {};
            if (fieldData.controlType == 4) {
                var showCurUser = $("#showCurUser:checked").val() ? 1 : 0;
                json.showCurUser = showCurUser;
            }
            var opt = $("#fromType").find('option:selected');
            var fromType = opt.attr("type");
            var typeVal = null;
            if (fromType == 'script') {
                typeVal = $("#fromScript").val();
            } else {
                typeVal = opt.val();
            }
            var scope = {};
            scope.type = fromType;
            scope.value = typeVal;
            json.scope = scope;
            fieldData.ctlProperty = JSON.stringify(json);
        }

        // 显示当前组织
        if (fieldData.controlType == 6 || fieldData.controlType == 18) {
            var json = {};
            if (fieldData.controlType == 18) {
                var showCurOrg = $("#showCurOrg:checked").val() ? 1 : 0;
                json = {"showCurOrg": showCurOrg};
            }
            var opt = $("#fromType").find('option:selected');
            var fromType = opt.attr("type");
            var typeVal = null;
            if (fromType == 'script') {
                typeVal = $("#fromScript").val();
            } else {
                typeVal = opt.val();
            }
            var scope = {};
            scope.type = fromType;
            scope.value = typeVal;
            json.scope = scope;
            fieldData.ctlProperty = JSON.stringify(json);
        }
        // 显示当前岗位
        if (fieldData.controlType == 19 || fieldData.controlType == 7) {
            var json = {};
            if (fieldData.controlType == 19) {
                var showCurPos = $("#showCurPos:checked").val() ? 1 : 0;
                json = {"showCurPos": showCurPos}
            }
            var opt = $("#fromType").find('option:selected');
            var fromType = opt.attr("type");
            var typeVal = null;
            if (fromType == 'script') {
                typeVal = $("#fromScript").val();
            } else {
                typeVal = opt.val();
            }
            var scope = {};
            scope.type = fromType;
            scope.value = typeVal;
            json.scope = scope;
            fieldData.ctlProperty = JSON.stringify(json);
        }
        //是否直接上传文件 , 上传文件类型
        if (fieldData.controlType == 9) {
            var isDirectUpLoad = $('#isDirectUpLoad')[0].checked ? 1 : 0;
            json = {"isDirectUpLoad": isDirectUpLoad};
            fieldData.ctlProperty = JSON.stringify(json);
            //上传文件类型
            var filetypes = '';
            var checked = $("input[name='fileTypes']:checked");
            checked.each(function (i) {
                if (i == checked.length - 1) {
                    filetypes += checked[i].title;
                } else {
                    filetypes += checked[i].title + ";";
                }
            });
            fieldData.fileTypes = filetypes;
        }
        fieldData.dictName = $("#treeclass").text();
        //isAdd == 0编辑 更新数组对应索引的值
        parent.layui.getFieldValue(fieldData, isAdd, editIndex);
        if(isAdd == 0){ //编辑时候 点保存直接关闭编辑列窗口
            parent.layer.close(parent.layer.getFrameIndex(window.name))
        }else{
            resetField();
        }
    });

    function getOptionData() {
        var optionAry = [];
        var controlType = $("select[name='controlType']").val();
        $($(".editable-left-div")).each(function () {
            var me = $(this);
            var optionKey = $("input[name='optionKey']", me).val();
            var optionValue = $("input[name='optionValue']", me).val();
            var checkboxDefault = "-1";
            var radioDefault = "-1";
            if (typeof controlType != "undefined" && controlType == "13") {
                checkboxDefault = $("input[name='checkboxDefault']:checked", me).val();
                if (checkboxDefault != "1") {
                    checkboxDefault = "0";
                }
            }
            if (typeof controlType != "undefined" && controlType == "14") {
                radioDefault = $("input[name='radioDefault']:checked", me).val();
                if (radioDefault != "1") {
                    radioDefault = "0";
                }
            }
            if (optionKey && optionValue) {
                optionAry.push({
                    key: optionKey,
                    value: optionValue,
                    checkboxDefault: checkboxDefault,
                    radioDefault: radioDefault
                });
            }
        });
        return optionAry;
    }

    $(function () {

        //获取表单校验规则数据
        $.ajax({
            type: 'post',
            url: serverPath.formPath + setter.formLinkPath +"formRule/list",
            dataType: 'json',
            async:false,
            success: function (result) {
                $.each(result.data,function (index,item) {
                    var ruleOption = optionTemplate.replace('#value', item.alias).replace('#text', item.name);
                    $("#validRule").append(ruleOption);
                });
                form.render();
            }
        });

        //編輯
        if (isAdd == 0) {
            editField();
        }
    })

});


function isExecutorSelector(ctlType) {
    ctlType = parseInt(ctlType);
    if (ctlType == 4 || ctlType == 8 || ctlType == 17 || ctlType == 5 || ctlType == 18
        || ctlType == 6 || ctlType == 19 || ctlType == 7)
        return true;
    return false;
}

//根据字段描述生成字段名
$("#fieldDesc").change(function () {
    var fieldDesc = $(this).val();
    if ($.trim(fieldDesc).length < 1) return;
    var formKey = component.chineseToPinyinAlias(fieldDesc);
    $("#fieldName").val(formKey[0]);
});

/**
 * 根据控件类型改变值的长度
 * @param len
 */
function hdlCharLen(ct) {
    ct = "" + ct;
    changeCharLen(2000);
    switch (ct) {
        case '2':
            changeCharLen(2000);
            break;
        case '3':
            changeCharLen(128);
            break;
        //部门选择器（单选）
        case '4':
        case '17':
        case '18':
        case '19':
            changeCharLen(2000);
            break;
        //选择器（多选）
        case '5':
        case '6':
        case '7':
        case '8':
            changeCharLen(2000);
            break;
        //隐藏域
        case '16':
            changeCharLen(100);
            break;
        //如果选择文件上传控件，将字符宽度默认修改为2000个字符。
        case '9':
            changeCharLen(2000);
            break;
        //下拉选项,单选框，复选框
        case '11':
        case '13':
        case '14':
            changeCharLen(2000);
            break;
        //日期控件
        case '15':
            changeCharLen(20);
            break;
        case '20':
        case '22':
            changeCharLen(2000);
            break;
        case '12':
        case '21':
            changeCharLen(50);
            break;

    }
}

/**
 * 改变值的长度
 * @param len
 */
function changeCharLen(len) {
    $("#charLen").val(len);
}

/**
 * 重置字段。
 */
function resetField() {
    $("#formData")[0].reset();
    layui.form.render();
    $(".length").show();
    $("#encryptDiv").show();
    $(".number,.dataDic,.limit,.dropDown,.user,.org,.pos,.encAlgorithm,.decAlgorithm,.script,.IDScript,.uploadFileDiv,.uploadFileTypeDiv").hide();
    $("#isRequired").prop("checked", false);
    $("#isQuery").prop("checked", false);
    $("#isFlowVar").prop("checked", false);
    $("#isReference").prop("checked", false);
    $("#isList").prop("checked", true);
    $("#uploadFileDiv").hide();
    $("#uploadFileTypeDiv").hide();

    $("#spanDateFormat").hide();
    $(".validationRule").show();
    $(".labeLength").show();

    $(".serNumber").hide();
    $(".conTypes").show();
    $(".addFrom").children('tr').remove();
    $("#isShowComdify").removeAttr("disabled");


    var objSelect = $('#controlType');
    objSelect.empty();
    //控件列表。
    $(controlList).each(function (i, d) {
        var option = optionTemplate.replace('#value', d.key).replace('#text', d.value);
        //文本类型
        if (d.key != "10") {
            objSelect.append(option);
        }
    });
    var valueFrom = $('#valueFrom');
    valueFrom.empty();
    $(varFromList).each(function (i, d) {
        var key = d.key;
        var option = optionTemplate.replace('#value', key).replace('#text', d.value);
        valueFrom.append(option);
    });
    form.render();
}

/**
 * 编辑字段
 */
function editField() {
    //查询此表是否有数据，没有数据才可以进行是否加密的修改
    $.ajax({
        url: serverPath.formPath + setter.formLinkPath +"table/isExistDataInTable",
        dataType: 'json',
        data: {"tableId": tableId},
        success: function (result) {
            if (result.data > 0) {
                $("input:radio[name=isEncrypt]").attr("disabled", "disabled");
                $("#encrypt").attr("readonly", "readonly");
                $("#decrypt").attr("readonly", "readonly");
            }
        },
        error: function (d) {
            layui.layer.alert("请求失败！")
        }
    });

    var editData = parent.layui.getEditData();
    $("#addFieldInfo").hide();
    $("#editFieldButton").show();
    $("#encryptDiv").hide();
    initControlByField(editData);
}

/**
 * 根据字段设置页面控件状态。
 */
function initControlByField(field) {
    //是外部表 字段描述和字段名设置只读
    if(isExternal == 1){
        $("#fieldName").attr("disabled", "disabled");
        $("#fieldDesc").attr("disabled", "disabled");
        $("#fieldName").css("background","#ebebeb");
        $("#fieldDesc").css("background","#ebebeb");
    }

    $("#fieldName").val(field.fieldName);
    $("#fieldDesc").val(field.fieldDesc);
    $("#fieldType").val(field.fieldType);
    $("#valueFrom").val(field.valueFrom);
    $("#controlType").val(field.controlType);
    $("#identityName").val(field.identity);
    if ("null" == field.ctlProperty || null == field.ctlProperty) {
        field.ctlProperty = "";
    }
    initNumber(field);
    //设置字段选项。
    $("#isRequired").attr("checked", field.isRequired == 1);
    $("#isList").attr("checked", field.isList == 1);
    $("#isQuery").attr("checked", field.isQuery == 1);
    $("#isFlowVar").attr("checked", field.isFlowVar == 1);
    $("#isReference").attr("checked", field.isReference == 1);
    $("#isEncrypt").attr("selected", field.isEncrypt == 1);

    $("input[name='isEncrypt'][value='" + field.isEncrypt + "']").prop("checked", "checked");
    if (field.isEncrypt == 1) {
        $(".encAlgorithm").show();
        $(".decAlgorithm").show();
    }
    //设置数据长度
    setFieldLengthByField(field);

    //日期类型
    if (field.fieldType == date_ || field.controlType == 15) {
        $("#spanDateFormat").show();
        try {
            var property = eval("(" + field.ctlProperty + ")");
            $("#selDateFormat").val(property.dateType);
            if (property.displayDate == "1") {
                $("#isCurrentDate").attr("checked", "checked");
            }
        } catch (e) {
        }
    }
    //设置表单变量
    setShowFlowVar(field.controlType);

    var ft = field.fieldType;
    var vf = field.valueFrom;
    var ct = field.controlType;
    hdlValueFromShow(ft, vf);
    hdlControlTypeShow(ft, vf, ct);
    hdlIdentityTrShow(ft, vf, ct, field.identity, field.script);
    hdlScriptTrShow(ft, vf, ct, field.script);
    hdlScriptIdTrShow(ft, vf, ct, field.scriptID);
    hdlOptionTrShow(ft, vf, ct, field.options);
    hdlRuleTrShow(ft, vf, ct, field.validRule);
    hdlDictTrShow(ft, vf, ct, field.dictName);
    hdlIsReferenceShow(vf, ct, field.isReference);
    var curUser = null, curOrg = null, curPos = null, scope = null;
    if (field.ctlProperty) {
        var prop = JSON.parse(field.ctlProperty);
        curUser = prop.showCurUser || null;
        curOrg = prop.showCurOrg || null;
        curPos = prop.showCurPos || null;
        scope = prop.scope || null;
    }
    hdlShowCurUserTrShow(ft, vf, ct, curUser, scope);
    hdlShowCurOrgTrShow(ft, vf, ct, curOrg, scope);
    hdlShowCurPosTrShow(ft, vf, ct, curPos, scope);
    var isDirectUpLoad = null;
    var isShowidentity = null;
    if (field.ctlProperty) {
        var prop = JSON.parse(field.ctlProperty);
        isDirectUpLoad = prop.isDirectUpLoad || null;
        isShowidentity = prop.isShowidentity || null;
        $("#isShowidentity").attr("checked", isShowidentity == 1);
    }
    hdlShowUpLoadTrShow(ft, vf, ct, isDirectUpLoad, field.fileTypes);
    form.render();
}

/**
 * 显示数字类型相关设置
 * @param field
 */
function initNumber(field) {
    $("#intLen").val(field.intLen);
    $("#decimalLen").val(field.decimalLen);
    if (field.fieldType == 'number') {
        $("#charLen").hide();
        $("#coinValueDiv").hide();
        $(".number").show();
        if(field.ctlProperty){
            var property = eval("(" + field.ctlProperty + ")");
            if (property != null) {
                if (property.isShowComdify == "1") {
                    $("#isShowComdify").attr("checked", "checked");
                }
                if (property.coinValue != null && property.coinValue != "") {
                    $("#isShowComdify").attr('disabled', true);
                    $("#coinValueDiv").show();
                    $("#coinValue").val(property.coinValue);
                    $("#coinType").attr("checked", "checked");
                }else{
                    $("#num").css("margin-right", "2%")
                }
            }
        }
    } else {
        $(".number").hide();
    }
}

/**
 * 根据字段信息设置控件长度。
 * @param field
 */
function setFieldLengthByField(field) {
    var fieldType = field.fieldType;
    switch (fieldType) {
        case varchar_:
            $("#charLen").val(field.charLen);
            $(".length").show();
            $(".number").hide();
            break;
        case number_:
            $("#intLen").val(field.intLen);
            $("#decimalLen").val(field.decimalLen);
            $(".length").hide();
            $(".number").show();
            break;
        default:
            $(".length").hide();
            $(".number").hide();
            break;
    }
}

/**
 * 控件类型或者字段类型 限制表单变量
 * @param controlType 控件类型
 */
function setShowFlowVar(controlType) {
    //附件，office
    if (isHideFlowVar(controlType)) {
        $("#isFlowVar").attr("checked", false);
    }
}

function isHideFlowVar(controlType) {
    if (controlType == 2 || controlType == 9 || controlType == 10 || controlType == 12 || controlType == 21) {
        return true;
    }
    return false;
}

/**
 * 下拉选项模版。
 */
var optiontemplate = '<option value="#value">#text</option>';


/**
 * 根据列类型，处理值来源显示
 * @param fy 字段类型
 */
function hdlValueFromShow(fy, value) {
    var varFromList = [];
    switch (fy) {
        case varchar_://文本
            var varFromList = [{key: 0, value: '表单输入'}, {key: 1, value: '脚本运算(显示)'},
                {key: 2, value: '脚本运算(不显示)'}, {key: 3, value: '流水号'}];
            break;
        case clob_://大文本
            var varFromList = [{key: 0, value: '表单输入'}];
            break;
        case date_://日期
            var varFromList = [{key: 0, value: '表单输入'}];
            break;
        case number_://数字
            var varFromList = [{key: 0, value: '表单输入'}, {key: 1, value: '脚本运算(显示)'},
                {key: 2, value: '脚本运算(不显示)'}];
            break;
    }
    var objSelect = $('#valueFrom');
    objSelect.empty();

    $(varFromList).each(function (i, d) {
        var key = d.key;
        var option = $(optiontemplate.replace('#value', key).replace('#text', d.value));
        if (value != undefined && value != null && value != "") {
            if (key == value) {
                option.attr("selected", "selected");
            }
        }
        objSelect.append(option);
    });
}

/**
 * 根据字段类型、值来源，处理控件的显示
 * @param ft 字段类型
 * @param vf 值来源
 */
function hdlControlTypeShow(ft, vf, value) {
    vf = "" + vf;
    var controlTypeTr = $(".conTypes");
    var controlType = $("#controlType");
    controlType.empty();
    var controlList = [];
    controlTypeTr.hide();

    switch (ft) {
        case varchar_://文本
            switch (vf) {
                case '0'://表单输入
                    controlTypeTr.show();
                    controlList = [{key: '1', value: '单行文本框'}, {key: '2', value: '多行文本框'},
                        {key: '10', value: '富文本框'}, {key: '3', value: '数据字典'},
                        {key: '4', value: '人员选择器(单选)'}, {key: '8', value: '人员选择器(多选)'},
                        {key: '17', value: '角色选择器(单选)'}, {key: '5', value: '角色选择器(多选)'},
                        {key: '18', value: '组织选择器(单选)'}, {key: '6', value: '组织选择器(多选)'},
                        {key: '19', value: '岗位选择器(单选)'}, {key: '7', value: '岗位选择器(多选)'},
                        {key: '16', value: '隐藏域'}, {key: '9', value: '文件上传'},
                        {key: '11', value: '下拉选项'}, {key: '13', value: '复选框'},
                        {key: '14', value: '单选按钮'},
                        {key: '15', value: '日期控件'},
                        {key: '22', value: '图片展示控件'}
                    ];
                    break;
                case '1'://脚本输入 (显示)
                case '2'://脚本输入 (隐藏)
                    controlTypeTr.show();
                    controlList = [{key: '1', value: '单行文本框'}, {key: '2', value: '多行文本框'},
                        {key: '3', value: '数据字典'},
                        {key: '4', value: '人员选择器(单选)'}, {key: '8', value: '人员选择器(多选)'},
                        {key: '17', value: '角色选择器(单选)'}, {key: '5', value: '角色选择器(多选)'},
                        {key: '18', value: '组织选择器(单选)'}, {key: '6', value: '组织选择器(多选)'},
                        {key: '19', value: '岗位选择器(单选)'}, {key: '7', value: '岗位选择器(多选)'},
                        {key: '16', value: '隐藏域'}, {key: '9', value: '文件上传'},
                        {key: '11', value: '下拉选项'}, {key: '13', value: '复选框'},
                        {key: '14', value: '单选按钮'},
                        {key: '15', value: '日期控件'}];
                    break;
                case '3'://流水号
                    break;
            }

            break;
        case clob_://大文本
            switch (vf) {
                case '0'://表单输入
                    controlTypeTr.show();
                    controlList = [{key: '2', value: '多行文本框'},
                        {key: '10', value: '富文本框'}];
                    break;
                case '1'://脚本输入 (显示)
                case '2'://脚本输入 (隐藏)
                case '3'://流水号
                    break;
            }

            break;
        case date_://日期
            switch (vf) {
                case '0'://表单输入
                    controlTypeTr.show();
                    controlList = [{key: '15', value: '日期控件'}];
                    break;
                case '1'://脚本输入 (显示)
                case '2'://脚本输入 (隐藏)
                case '3'://流水号
                    break;
            }
            break;
        case number_://数字
            switch (vf) {
                case '0'://表单输入
                    controlList[2] = {key: '11', value: '下拉选项'};
                case '1'://脚本输入 (显示)
                case '2'://脚本输入 (隐藏)
                    controlTypeTr.show();
                    controlList[0] = {key: '1', value: '单行文本框'};
                    controlList[1] = {key: '16', value: '隐藏域'};
                    break;
                case '3'://流水号
                    break;
            }

            break;
    }

    $(controlList).each(function (i, d) {
        var option = $(optiontemplate.replace('#value', d.key).replace('#text', d.value));
        if (value != undefined && value != null && value != "") {
            if (value == d.key) {
                option.attr("selected", "selected");
            }
        }
        if (isExternal == 0) {
            controlType.append(option);
        }
        //外部表的情况,不支持选择器类型。
        else {
            if (!isExecutorSelector(d.key)) {
                controlType.append(option);
            }
        }

    });
}

/**
 * 根据字段类型、值来源和控件类型，处理是否显示流水号
 * @param fy 字段类型
 * @param vf 值来源
 * @param ct 控制类型
 */
function hdlIdentityTrShow(ft, vf, ct, identityAlias, identityName) {
    vf = "" + vf;
    ct = "" + ct;
    var tr = $(".serNumber");
    tr.hide();

    switch (vf) {
        case '0'://表单输入
            break;
        case '1'://脚本输入 (显示)
            break;
        case '2'://脚本输入 (隐藏)
            break;
        case '3'://流水号
            tr.show();
            if (identityAlias) {
                $("#identityAlias").val(identityAlias);
                $("#identityName").val(identityAlias);
            }
            break;
    }
}

/**
 * 根据字段类型、值来源和控件类型，处理是否显示脚本
 * @param fy 字段类型
 * @param vf 值来源
 * @param ct 控制类型
 */
function hdlScriptTrShow(ft, vf, ct, value) {
    vf = "" + vf;
    ct = "" + ct;
    var tr = $(".script");
    tr.hide();
    switch (vf) {
        case '0'://表单输入
            break;
        case '1'://脚本输入 (显示)
            tr.show();
        case '2'://脚本输入 (隐藏)
            tr.show();
        case '3'://流水号
            break;
    }
    if (value != undefined && value != null && value != "") {
        $("#script").val(value);
    }
}

/**
 * 根据字段类型、值来源和控件类型，处理是否显示脚本ID
 * @param fy 字段类型
 * @param vf 值来源
 * @param ct 控制类型
 */
function hdlScriptIdTrShow(ft, vf, ct, value) {
    vf = "" + vf;
    ct = "" + ct;
    var tr = $(".IDScript");
    tr.hide();
    switch (vf) {
        case '0'://表单输入
            break;
        case '1'://脚本输入 (显示)
            switch (ct) {
                case '1': //单行文本框
                    break;
                case '2': //多行文本框
                    break;
                case '3': //数据字典
                    break;
                case '4': //人员选择器(单选)
                    tr.show();
                    break;
                case '8': //人员选择器(多选)
                    tr.show();
                    break;
                case '17': //角色选择器(单选)
                    tr.show();
                    break;
                case '5': //角色选择器(多选)
                    tr.show();
                    break;
                case '18': //组织选择器(单选)
                    tr.show();
                    break;
                case '6': //组织选择器(多选)
                    tr.show();
                    break;
                case '19': //岗位选择器(单选)
                    tr.show();
                    break;
                case '7': //岗位选择器(多选)
                    tr.show();
                    break;
                case '16': //隐藏域
                    break;
                case '9': //文件上传
                    break;
                case '11': //下拉选项
                    break;
                case '13': //复选框
                    break;
                case '14': //单选按钮
                    break;
                case '12': //Office控件
                    break;
                case '15': //日期控件
                    break;
                case '20': //流程引用
                    tr.show();
                    break;
                case '21': //WebSign控件
                    break;
                case '22': //图片展示控件
                    break;
            }
            break;
        case '2'://脚本输入 (隐藏)
            switch (ct) {
                case '1': //单行文本框
                    break;
                case '2': //多行文本框
                    break;
                case '3': //数据字典
                    break;
                case '4': //人员选择器(单选)
                    tr.show();
                    break;
                case '8': //人员选择器(多选)
                    tr.show();
                    break;
                case '17': //角色选择器(单选)
                    tr.show();
                    break;
                case '5': //角色选择器(多选)
                    tr.show();
                    break;
                case '18': //组织选择器(单选)
                    tr.show();
                    break;
                case '6': //组织选择器(多选)
                    tr.show();
                    break;
                case '19': //岗位选择器(单选)
                    tr.show();
                    break;
                case '7': //岗位选择器(多选)
                    tr.show();
                    break;
                case '16': //隐藏域
                    break;
                case '9': //文件上传
                    break;
                case '11': //下拉选项
                    break;
                case '13': //复选框
                    break;
                case '14': //单选按钮
                    break;
                case '12': //Office控件
                    break;
                case '15': //日期控件
                    break;
                case '20': //流程引用
                    tr.show();
                    break;
                case '21': //WebSign控件
                    break;
                case '22': //图片展示控件
                    break;
            }
            break;

        case '3'://流水号
            break;

    }

    if (value != undefined && value != null && value != "") {
        $("#scriptID").val(value);
    }
}

/**
 * 根据字段类型、值来源和控件类型，处理是否显示下拉选项
 * @param fy 字段类型
 * @param vf 值来源
 * @param ct 控制类型
 */
function hdlOptionTrShow(ft, vf, ct, value) {
    vf = "" + vf;
    ct = "" + ct;
    var tr = $(".dropDown");
    tr.hide();
    switch (ft) {
        case varchar_:
            switch (vf) {
                case '0'://表单输入
                    switch (ct) {
                        case '1': //单行文本框
                            break;
                        case '2': //多行文本框
                            break;
                        case '3': //数据字典
                            break;
                        case '4': //人员选择器(单选)
                            break;
                        case '8': //人员选择器(多选)
                            break;
                        case '17': //角色选择器(单选)
                            break;
                        case '5': //角色选择器(多选)
                            break;
                        case '18': //组织选择器(单选)
                            break;
                        case '6': //组织选择器(多选)
                            break;
                        case '19': //岗位选择器(单选)
                            break;
                        case '7': //岗位选择器(多选)
                            break;
                        case '16': //隐藏域
                            break;
                        case '9': //文件上传
                            break;
                        case '11': //下拉选项
                            tr.show();
                            initOption(value);
                            break;
                        case '13': //复选框
                            //chrachange("13");//修改默认值的勾选框是复选，如果存在的话
                            tr.show();
                            initOption(value);
                            break;
                        case '14': //单选按钮
                            //chrachange("14");//修改默认值的勾选框是复选,如果存在的话
                            tr.show();
                            initOption(value);
                            break;
                        case '12': //Office控件
                            break;
                        case '15': //日期控件
                            break;
                        case '21': //WebSign控件
                            break;
                        case '22': //图片展示控件
                            break;
                    }
                    break;
                case '1'://脚本输入 (显示)
                    break;
                case '2'://脚本输入 (隐藏)
                    break;
                case '3'://流水号
                    break;
            }
            break;
        case number_:
            switch (vf) {
                case '0'://表单输入
                    switch (ct) {
                        case '1': //单行文本框
                            break;
                        case '2': //多行文本框
                            break;
                        case '3': //数据字典
                            break;
                        case '4': //人员选择器(单选)
                            break;
                        case '8': //人员选择器(多选)
                            break;
                        case '17': //角色选择器(单选)
                            break;
                        case '5': //角色选择器(多选)
                            break;
                        case '18': //组织选择器(单选)
                            break;
                        case '6': //组织选择器(多选)
                            break;
                        case '19': //岗位选择器(单选)
                            break;
                        case '7': //岗位选择器(多选)
                            break;
                        case '16': //隐藏域
                            break;
                        case '9': //文件上传
                            break;
                        case '11': //下拉选项
                            tr.show();
                            initOption(value);
                            break;
                        case '13': //复选框
                            //chrachange("13");//修改默认值的勾选框是复选，如果存在的话
                            tr.show();
                            initOption(value);
                            break;
                        case '14': //单选按钮
                            //chrachange("14");//修改默认值的勾选框是单选，如果存在的话
                            tr.show();
                            initOption(value);
                            break;
                        case '12': //Office控件
                            break;
                        case '15': //日期控件
                            break;
                        case '21': //WebSign控件
                            break;
                        case '22': //图片展示控件
                            break;
                    }
                    break;
                case '1'://脚本输入 (显示)
                    break;
                case '2'://脚本输入 (隐藏)
                    break;
            }
            break;
    }
    if (value != undefined && value != null && value != "") {
        var optsAry = {};
        try {
            optsAry = eval("(" + value + ")");
        }
        catch (e) {
        }
    }
}

function initOption(data) {
    var arrOption = JSON.parse(data);
    var trOption = "";
    for (var i = 0; i < arrOption.length; i++) {
        trOption = trOption +
            "<tr>" +
            "<td>" +
            "<div class='editable-left-div'style='margin-bottom:10px;' >" +
            "<label style='margin-left:10px;'>值:<input name='optionKey' value='" + arrOption[i].key + "' autocomplete='off' type='text' style='height:28px;'>" +
            "</label>" +
            "<label style='margin-left:10px;'>选项:<input name='optionValue' value='" + arrOption[i].value + "' type='text' style='height:28px;'></label>" +
            "<a class='moveUp layui-btn layui-btn-sm' style='padding:0 5px;margin-left:5px;'>上移</a>" +
            "<a class='moveDown layui-btn layui-btn-sm' style='padding:0 5px'>下移</a>" +
            "<a class='remove layui-btn layui-btn-danger layui-btn-sm' style='padding:0 5px'>移除</a>" +
            "</div>" +
            "</td>" +
            "</tr>";
    }
    $(".addFrom").append($(trOption));
}

/**
 * 根据字段类型、值来源和控件类型，处理是否显示验证规则
 * @param fy 字段类型
 * @param vf 值来源
 * @param ct 控制类型
 */
function hdlRuleTrShow(ft, vf, ct, value) {
    vf = "" + vf;
    ct = "" + ct;
    var tr = $(".validationRule");
    tr.hide();
    switch (vf) {
        case '0'://表单输入
            switch (ct) {
                case '1': //单行文本框
                case '2': //多行文本框
                    tr.show();
                    break;
            }
            break;
        case '1'://脚本输入 (显示)
            break;
        case '2'://脚本输入 (隐藏)
            break;
        case '3'://流水号
            break;
    }
    if (value != undefined && value != null && value != "") {
        $("#validRule").val(value);
    }
}

/**
 * 根据字段类型、值来源和控件类型，处理是否显示数据字典
 * @param fy 字段类型
 * @param vf 值来源
 * @param ct 控制类型
 */
function hdlDictTrShow(ft, vf, ct, value) {
    vf = "" + vf;
    ct = "" + ct;
    var tr = $(".dataDic");
    tr.hide();
    switch (vf) {
        case '0'://表单输入
            switch (ct) {
                case '1': //单行文本框
                    break;
                case '2': //多行文本框
                    break;
                case '3': //数据字典
                    tr.show();
                    break;
                case '4': //人员选择器(单选)
                    break;
                case '8': //人员选择器(多选)
                    break;
                case '17': //角色选择器(单选)
                    break;
                case '5': //角色选择器(多选)
                    break;
                case '18': //组织选择器(单选)
                    break;
                case '6': //组织选择器(多选)
                    break;
                case '19': //岗位选择器(单选)
                    break;
                case '7': //岗位选择器(多选)
                    break;
                case '16': //隐藏域
                    break;
                case '9': //文件上传
                    break;
                case '11': //下拉选项
                    break;
                case '13': //复选框
                    break;
                case '14': //单选按钮
                    break;
                case '12': //Office控件
                    break;
                case '15': //日期控件
                    break;
                case '20': //流程引用
                    break;
                case '21': //WebSign控件
                    break;
                case '22': //图片展示控件
                    break;
            }
            break;
        case '1'://脚本输入 (显示)
            break;
        case '2'://脚本输入 (隐藏)
            break;
        case '3'://流水号
            break;
    }

    if (value != undefined && value != null && value != "") {
        $("#treeclass").text(value);
    }
}


/**
 * 根据值来源和控件类型控制 超链接 选项 显示
 * @param vf
 * @param ct
 * @param value
 */
function hdlIsReferenceShow(vf, ct, value) {
    ct = "" + ct;
    var showIsLink = $("#showIsReference");
    var isLink = $("#isReference");
    showIsLink.hide();
    switch (ct) {
        case '4': //人员选择器(单选)
        case '8': //人员选择器(多选)
        case '17': //角色选择器(单选)
        case '5': //角色选择器(多选)
        case '18': //组织选择器(单选)
        case '6': //组织选择器(多选)
        case '19': //岗位选择器(单选)
        case '7': //岗位选择器(多选)
        case '20': //流程引用
            showIsLink.show();
            break;
    }
    if (value && value == 1) {
        isLink.attr("checked", "checked");
    }
}

/**
 * 根据字段类型、值来源和控件类型，处理是否显示当前用户,处理人员限定的范围
 * @param fy 字段类型
 * @param vf 值来源
 * @param ct 控制类型
 */
function hdlShowCurUserTrShow(fy, vf, ct, value, jsonObj) {
    vf = "" + vf;
    ct = "" + ct;
    var tr = $(".user");
    var fromTypeTr = $(".limit");
    var fromTypeScriptTr = $(".script");
    tr.hide();
    fromTypeTr.hide();
    fromTypeScriptTr.hide();
    switch (vf) {
        case '0'://表单输入
            switch (ct) {
                case '1': //单行文本框
                    break;
                case '2': //多行文本框
                    break;
                case '3': //数据字典
                    break;
                case '4': //人员选择器(单选)
                    tr.show();
                    fromTypeTr.show();
                    handFromType(jsonObj, fromTypeScriptTr);
                    break;
                case '8': //人员选择器(多选)
                    fromTypeTr.show();
                    handFromType(jsonObj, fromTypeScriptTr);
                    break;
                case '17': //角色选择器(单选)
                    break;
                case '5': //角色选择器(多选)
                    break;
                case '18': //组织选择器(单选)
                    break;
                case '6': //组织选择器(多选)
                    break;
                case '19': //岗位选择器(单选)
                    break;
                case '7': //岗位选择器(多选)
                    break;
                case '16': //隐藏域
                    break;
                case '9': //文件上传
                    break;
                case '11': //下拉选项
                    break;
                case '13': //复选框
                    break;
                case '14': //单选按钮
                    break;
                case '12': //Office控件
                    break;
                case '15': //日期控件
                    break;
                case '20': //流程引用
                    break;
                case '21': //WebSign控件
                    break;
                case '22': //图片展示控件
                    break;
            }
            break;
        case '1'://脚本输入 (显示)
            fromTypeScriptTr.show();
        case '2'://脚本输入 (隐藏)
            fromTypeScriptTr.show();
        case '3'://流水号
            break;
    }
    if (value) {
        $("#showCurUser").attr("checked", "checked");
    }
}

//处理人员选择器的左边树的控制范围
function handFromType(scope, ScriptTr) {
    if (scope) {
        var type = scope.type;
        var typeVal = scope.value;
        if (type == 'script') {
            $("#fromType").val("");
            $(ScriptTr).show();
            $("#script").val(typeVal);
        } else {
            if (typeVal) {
                $("#fromType").val(typeVal);
            }
        }
    }
}

/**
 * 根据字段类型、值来源和控件类型，处理是否显示组织选择器
 * @param fy 字段类型
 * @param vf 值来源
 * @param ct 控制类型
 */
function hdlShowCurOrgTrShow(ft, vf, ct, value, jsonObj) {
    vf = "" + vf;
    ct = "" + ct;
    var tr = $(".org");
    var fromTypeTr = $(".limit");
    var fromTypeScriptTr = $(".script");
    tr.hide();
    switch (vf) {
        case '0'://表单输入
            switch (ct) {
                case '1': //单行文本框
                    break;
                case '2': //多行文本框
                    break;
                case '3': //数据字典
                    break;
                case '4': //人员选择器(单选)
                    break;
                case '8': //人员选择器(多选)
                    break;
                case '17': //角色选择器(单选)
                    break;
                case '5': //角色选择器(多选)
                    break;
                case '18': //组织选择器(单选)
                    tr.show();
                    fromTypeTr.show();
                    handFromType(jsonObj, fromTypeScriptTr);
                    break;
                case '6': //组织选择器(多选)
                    fromTypeTr.show();
                    handFromType(jsonObj, fromTypeScriptTr);
                    break;
                case '19': //岗位选择器(单选)
                    break;
                case '7': //岗位选择器(多选)
                    break;
                case '16': //隐藏域
                    break;
                case '9': //文件上传
                    break;
                case '11': //下拉选项
                    break;
                case '13': //复选框
                    break;
                case '14': //单选按钮
                    break;
                case '12': //Office控件
                    break;
                case '15': //日期控件
                    break;
                case '20':
                    break;
                case '21': //WebSign控件
                    break;
                case '22': //图片展示控件
                    break;
            }
            break;
        case '1'://脚本输入 (显示)
            fromTypeScriptTr.show();
            break;
        case '2'://脚本输入 (隐藏)
            fromTypeScriptTr.show();
            break;
        case '3'://流水号
            break;
    }
    if (value) {
        $("#showCurOrg").attr("checked", "checked");
    }
}

/**
 * 根据字段类型、值来源和控件类型，处理是否显示岗位选择器
 * @param fy 字段类型
 * @param vf 值来源
 * @param ct 控制类型
 */
function hdlShowCurPosTrShow(ft, vf, ct, value, jsonObj) {
    vf = "" + vf;
    ct = "" + ct;
    var tr = $(".pos");
    var fromTypeTr = $(".limit");
    var fromTypeScriptTr = $(".script");
    tr.hide();
    switch (vf) {
        case '0'://表单输入
            switch (ct) {
                case '1': //单行文本框
                    break;
                case '2': //多行文本框
                    break;
                case '3': //数据字典
                    break;
                case '4': //人员选择器(单选)
                    break;
                case '8': //人员选择器(多选)
                    break;
                case '17': //角色选择器(单选)
                    break;
                case '5': //角色选择器(多选)
                    break;
                case '18': //组织选择器(单选)
                    break;
                case '6': //组织选择器(多选)
                    break;
                case '19': //岗位选择器(单选)
                    tr.show();
                    fromTypeTr.show();
                    handFromType(jsonObj, fromTypeScriptTr);
                    break;
                case '7': //岗位选择器(多选)
                    fromTypeTr.show();
                    handFromType(jsonObj, fromTypeScriptTr);
                    break;
                case '16': //隐藏域
                    break;
                case '9': //文件上传
                    break;
                case '11': //下拉选项
                    break;
                case '13': //复选框
                    break;
                case '14': //单选按钮
                    break;
                case '12': //Office控件
                    break;
                case '15': //日期控件
                    break;
                case '20': //流程引用
                    break;
                case '21': //WebSign控件
                    break;
            }
            break;
        case '1'://脚本输入 (显示)
            fromTypeScriptTr.show();
            break;
        case '2'://脚本输入 (隐藏)
            fromTypeScriptTr.show();
            break;
        case '3'://流水号
            break;
    }
    if (value) {
        $("#showCurPos").attr("checked", "checked");
    }
}

/**
 * 根据字段类型、值来源和控件类型，处理是否显示直接上传文件
 * @param fy 字段类型
 * @param vf 值来源
 * @param ct 控制类型
 */
function hdlShowUpLoadTrShow(fy, vf, ct, value, fileTypes) {
    vf = "" + vf;
    ct = "" + ct;
    var tr = $("#uploadFileTypeDiv");
    tr.hide();
    switch (vf) {
        case '0'://表单输入
            switch (ct) {
                case '1': //单行文本框
                    break;
                case '2': //多行文本框
                    break;
                case '3': //数据字典
                    break;
                case '4': //人员选择器(单选)
                    break;
                case '8': //人员选择器(多选)
                    break;
                case '17': //角色选择器(单选)
                    break;
                case '5': //角色选择器(多选)
                    break;
                case '18': //组织选择器(单选)
                    break;
                case '6': //组织选择器(多选)
                    break;
                case '19': //岗位选择器(单选)
                    break;
                case '7': //岗位选择器(多选)
                    break;
                case '16': //隐藏域
                    break;
                case '9': //文件上传
                    tr.show();
                    uploadFileType();
                    // $("#uploadFileDiv").show();
                    break;
                case '11': //下拉选项
                    break;
                case '13': //复选框
                    break;
                case '14': //单选按钮
                    break;
                case '15': //日期控件
                    break;
                case '20': //流程引用
                    break;
                case '22': //图片展示控件
                    break;
            }
            break;
        case '1'://脚本输入 (显示)
        case '2'://脚本输入 (隐藏)
        case '3'://流水号
            break;
    }
    if (value != undefined && value != null && value != "") {
        if (value == 1) {
            $("input[name='isDirectUpLoad']").attr("checked", "checked");
        }
    }
    $("input[name='fileTypes']").each(function (i) {
        $(this).attr("checked", false);
    });
    $("input[id='fileTypesAll']").attr("checked", false);
    if (fileTypes != undefined && fileTypes != null && fileTypes != "") {
        var type = fileTypes.split(";");
        if (type.length == 3) {
            $("input[id='fileTypesAll']").prop("checked", true);
        }
        for (var i = 0; i < type.length; i++) {
            $("input[id='fileTypes_" + type[i] + "']").prop("checked", true);
        }
    }
    if($("#fieldType").val()=="date"){
        $(".labeLength").hide();
    }//初始化日期格式隐藏长度

}

//获取文件可以上传的类型
function uploadFileType() {
    $.ajax({
        type: 'get',
        url: serverPath.formPath + setter.sysLinkPath +"sysProperty/get",
        dataType: 'json',
        async:false,
        data: {"id": "31"},
        success: function (result) {
            var fileType = result.data.propertyValue;
            var fileTypeArray = fileType.split(";");
            var html = '<input type="checkbox" id="fileTypesAll" lay-skin="primary" checked="checked" name="fileTypesAll"' +
                'lay-filter="allChoose" title="全部"/>';
            for(var i = 0;i < fileTypeArray.length;i++){
                var fileTypeId = "#fileTypes_" + fileTypeArray[i];
                html += '<input type="checkbox" name="fileTypes" lay-skin="primary" checked="checked" id="fileTypes_'+fileTypeArray[i]+'"' +
                        'title="'+fileTypeArray[i]+'" lay-filter="fileTypes"/>';
            }
            $("#uploadFileTypeDiv > div").html(html);
            layui.form.render('checkbox');
        }
    });
}
